home *** CD-ROM | disk | FTP | other *** search
- /* SplitFile.c - von Christof Brühann
- * Aufruf mit DICE: dcc SplitFile.c -o SplitFile */
- #include <dos/dos.h>
- #include <exec/memory.h>
- #define BUFFERSIZE 32000
- int main(long argc,char **argv)
- {
- struct FileHandle *file_old,*file_new;
- ULONG size_old,size_new,filenum,i,j;
- UBYTE filename_new[255],ext[255],*buffer;
- if (argc!=3) {
- printf("\nAufruf: SplitFile <Datei> <Größe>\n\n");
- return(0);
- }
- if(file_old=(struct FileHandle *)
- Open(argv[1],MODE_OLDFILE)) {
- /* Quelldatei */
- Seek(file_old,0,OFFSET_END);
- /* Größe Quelldatei */
- size_old=Seek(file_old,0,OFFSET_BEGINNING);
- sscanf(argv[2],"%d",&size_new);
- if(size_new<size_old && size_new!=0) {
- /* Größenparameter korrekt? */
- if(buffer=(UBYTE *)
- AllocMem(BUFFERSIZE,MEMF_PUBLIC)) {
- /* Puffer reservieren*/
- for (filenum=1;filenum<size_old/size_new+2;
- filenum++) {
- /* Schleife für Erstellung der Teildateien */
- sprintf(ext,"_%02d",filenum);
- strcpy(filename_new,argv[1]);
- strcat(filename_new,ext);
- if (file_new=(struct FileHandle *)
- Open(filename_new,MODE_NEWFILE)) {
- /* Teildatei öffnen */
- printf("Erstelle '%s'\n",filename_new);
- i=0;
- while (i<size_new) {
- /* Teildatei mit Pufferung erstellen */
- j=BUFFERSIZE;
- if (size_new-i<BUFFERSIZE) j=size_new-i;
- if (j=Read(file_old,buffer,j))
- Write(file_new,buffer,j);
- else {
- filenum=-2;
- break;
- }
- i+=BUFFERSIZE;
- }
- Close(file_new);
- }
- else break;
- }
- FreeMem(buffer,BUFFERSIZE);
- }
- }
- Close(file_old);
- }
- else
- printf("%s kann nicht geöffnet werden.",argv[1]);
- return(0);
- }
-